/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jpa.entities;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author innovapps.co
 */
@Entity
@Table(name = "informe_soldadura")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "InformeSoldadura.findAll", query = "SELECT i FROM InformeSoldadura i"),
    @NamedQuery(name = "InformeSoldadura.findByIdInformeSoldadura", query = "SELECT i FROM InformeSoldadura i WHERE i.idInformeSoldadura = :idInformeSoldadura"),
    @NamedQuery(name = "InformeSoldadura.findByFecha", query = "SELECT i FROM InformeSoldadura i WHERE i.fecha = :fecha"),
    @NamedQuery(name = "InformeSoldadura.findByCumple", query = "SELECT i FROM InformeSoldadura i WHERE i.cumple = :cumple"),
    @NamedQuery(name = "InformeSoldadura.findByFechaProduccion", query = "SELECT i FROM InformeSoldadura i WHERE i.fechaProduccion = :fechaProduccion")})
public class InformeSoldadura implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_informe_soldadura")
    private Integer idInformeSoldadura;
    @Basic(optional = false)
    @Column(name = "fecha")
    @Temporal(TemporalType.DATE)
    private Date fecha;
    @Basic(optional = false)
    @Column(name = "cumple")
    private boolean cumple;
    @Basic(optional = false)
    @Column(name = "fecha_Produccion")
    @Temporal(TemporalType.DATE)
    private Date fechaProduccion;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "informeSoldaduraIdInformeSoldadura")
    private List<DetalleInforme> detalleInformeList;
    @JoinColumn(name = "maquina_id_maquina", referencedColumnName = "id_maquina")
    @ManyToOne(optional = false)
    private Maquina maquinaIdMaquina;
    @JoinColumn(name = "mallas_id_mallas", referencedColumnName = "id_malla")
    @ManyToOne(optional = false)
    private Malla mallasIdMallas;
    @JoinColumn(name = "cliente_id_cliente", referencedColumnName = "id_cliente")
    @ManyToOne(optional = false)
    private Cliente clienteIdCliente;

    public InformeSoldadura() {
    }

    public InformeSoldadura(Integer idInformeSoldadura) {
        this.idInformeSoldadura = idInformeSoldadura;
    }

    public InformeSoldadura(Integer idInformeSoldadura, Date fecha, boolean cumple, Date fechaProduccion) {
        this.idInformeSoldadura = idInformeSoldadura;
        this.fecha = fecha;
        this.cumple = cumple;
        this.fechaProduccion = fechaProduccion;
    }

    public Integer getIdInformeSoldadura() {
        return idInformeSoldadura;
    }

    public void setIdInformeSoldadura(Integer idInformeSoldadura) {
        Integer oldIdInformeSoldadura = this.idInformeSoldadura;
        this.idInformeSoldadura = idInformeSoldadura;
        changeSupport.firePropertyChange("idInformeSoldadura", oldIdInformeSoldadura, idInformeSoldadura);
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        Date oldFecha = this.fecha;
        this.fecha = fecha;
        changeSupport.firePropertyChange("fecha", oldFecha, fecha);
    }

    public boolean getCumple() {
        return cumple;
    }

    public void setCumple(boolean cumple) {
        boolean oldCumple = this.cumple;
        this.cumple = cumple;
        changeSupport.firePropertyChange("cumple", oldCumple, cumple);
    }

    public Date getFechaProduccion() {
        return fechaProduccion;
    }

    public void setFechaProduccion(Date fechaProduccion) {
        Date oldFechaProduccion = this.fechaProduccion;
        this.fechaProduccion = fechaProduccion;
        changeSupport.firePropertyChange("fechaProduccion", oldFechaProduccion, fechaProduccion);
    }

    @XmlTransient
    public List<DetalleInforme> getDetalleInformeList() {
        return detalleInformeList;
    }

    public void setDetalleInformeList(List<DetalleInforme> detalleInformeList) {
        this.detalleInformeList = detalleInformeList;
    }

    public Maquina getMaquinaIdMaquina() {
        return maquinaIdMaquina;
    }

    public void setMaquinaIdMaquina(Maquina maquinaIdMaquina) {
        Maquina oldMaquinaIdMaquina = this.maquinaIdMaquina;
        this.maquinaIdMaquina = maquinaIdMaquina;
        changeSupport.firePropertyChange("maquinaIdMaquina", oldMaquinaIdMaquina, maquinaIdMaquina);
    }

    public Malla getMallasIdMallas() {
        return mallasIdMallas;
    }

    public void setMallasIdMallas(Malla mallasIdMallas) {
        Malla oldMallasIdMallas = this.mallasIdMallas;
        this.mallasIdMallas = mallasIdMallas;
        changeSupport.firePropertyChange("mallasIdMallas", oldMallasIdMallas, mallasIdMallas);
    }

    public Cliente getClienteIdCliente() {
        return clienteIdCliente;
    }

    public void setClienteIdCliente(Cliente clienteIdCliente) {
        Cliente oldClienteIdCliente = this.clienteIdCliente;
        this.clienteIdCliente = clienteIdCliente;
        changeSupport.firePropertyChange("clienteIdCliente", oldClienteIdCliente, clienteIdCliente);
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idInformeSoldadura != null ? idInformeSoldadura.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof InformeSoldadura)) {
            return false;
        }
        InformeSoldadura other = (InformeSoldadura) object;
        if ((this.idInformeSoldadura == null && other.idInformeSoldadura != null) || (this.idInformeSoldadura != null && !this.idInformeSoldadura.equals(other.idInformeSoldadura))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return String.valueOf(idInformeSoldadura);
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }
    
}
